package br.edu.senai.controller;

import br.edu.senai.model.Produto;
import br.edu.senai.util.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProdutoDAO {
    private final static String QUERY_INSERT = "INSERT INTO PRODUTO (NOME,ESTOQUE) VALUES(?,?)";
    private final static String QUERY_DELETE = "DELETE FROM PRODUTO WHERE ID = ?";
    private final static String QUERY_LIST   = "SELECT ID,NOME,ESTOQUE FROM PRODUTO";
    private PreparedStatement query;
    
    public void salvar(Produto p) {
        Connection conn = Conexao.conectar();
        try {
            query = conn.prepareStatement(QUERY_INSERT);
            query.setString(1, p.getNome());
            query.setDouble(2, p.getEstoque());
            query.executeUpdate();
        } catch (SQLException ex) {
            System.out.println("Erro ao tentar persistir produto: " + ex.getMessage());
        }
        finally {
            Conexao.desconectar(conn);
        }
    }
    
    public List<Produto> listar() {
        Connection conn = Conexao.conectar();
        List<Produto> lProdutos = new ArrayList<>();
        try {
            query = conn.prepareStatement(QUERY_LIST);
            ResultSet result = query.executeQuery();
            while(result.next()) {
                lProdutos.add(new Produto(result.getInt("id"), result.getString("nome"), result.getDouble("estoque")));
            }
            return lProdutos;
        } catch (SQLException ex) {
            System.out.println("Erro ao tentar listar produtos: " + ex.getMessage());
        }
        finally {
            Conexao.desconectar(conn);
        }
        return null;
    }
}
